home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / mags-docs / zcd / nonsolosoft.lha / NonSoloSoft / Listino / Reviews / DICE3.0 < prev    next >
Internet Message Format  |  1998-03-27  |  21KB

  1. From: alien@acheron.amigans.gen.nz (Ross Smith)
  2. Newsgroups: comp.sys.amiga.reviews
  3. Subject: REVIEW: DICE C compiler, version 3.0
  4. Date: 13 May 1994 18:29:44 GMT
  5. Organization: The Amiga Online Review Column - ed. Daniel Barrett
  6.  
  7. PRODUCT NAME
  8.  
  9.     DICE 3.0
  10.  
  11. BRIEF DESCRIPTION
  12.  
  13.     C compiler and integrated development environment for the Amiga.
  14.  
  15. AUTHOR/COMPANY INFORMATION
  16.  
  17.     Name:        Obvious Implementations Corporation
  18.     Address:    PO Box 4487
  19.             Cary, NC 27519-4487
  20.             USA
  21.     Telephone:    (800) 761-2042
  22.     E-mail:        info@oic.com
  23.  
  24.  
  25. LIST PRICE
  26.  
  27.     Standard purchase price:                  $150.00 (US)
  28.     Student price:                            $95.00 (US)
  29.     For SAS C owners:                         $95.00 (US)
  30.     For registered owners of DICE shareware:  $75.00 (US)
  31.  
  32.     Currently, DICE 3.0 is available directly from OIC only; it is not
  33. distributed through any other source.  It can be ordered by mail from the
  34. address above or by calling the 800 number if you have a Visa card.  (Never
  35. send your credit card number to anyone by email!  There are too many people
  36. who could read it along the way.)
  37.  
  38.     The shareware version of DICE is no longer available.  See below
  39. concerning the freeware version.
  40.  
  41.  
  42. SPECIAL HARDWARE AND SOFTWARE REQUIREMENTS
  43.  
  44.     HARDWARE
  45.  
  46.         Requires 1 MB RAM.
  47.         (DICE 3.0 uses 1.5 to 8 MB; see "Installation").
  48.         Hard drive recommended but not required.
  49.         No CPU restrictions.
  50.  
  51.     SOFTWARE
  52.  
  53.         Requires AmigaDOS 1.3 or better.
  54.         Works fine under AmigaDOS version 2 and 3.
  55.         A few features require AmigaDOS 2.0 or better.
  56.  
  57.  
  58. COPY PROTECTION
  59.  
  60.     None.
  61.  
  62.  
  63. MACHINE USED FOR TESTING
  64.  
  65.     Model:             Amiga 2000HD
  66.     Processors:        25 MHz 68030 CPU, 68882 FPU
  67.     Chipset:           PAL ECS
  68.     RAM:               5 MB (1 MB Chip, 4 MB Fast)
  69.     Hard drive:        Quantum 50 MB internal SCSI
  70.     Floppy drive:      One internal 880K
  71.     Monitor:           Commodore 1084S
  72.     Operating system:  3.0 Beta (Kickstart 39.106, Workbench 39.29)
  73.  
  74.  
  75. INSTALLATION
  76.  
  77.     DICE 3.0 comes on five disks.  Installation is done by the Commodore
  78. Installer program.  There are three Installer scripts with icons on Disk 1 of
  79. the distribution.  One installs DICE on your hard drive, a second installs
  80. it on floppy disks, and the third creates the freeware version (see below).
  81.  
  82.     The hard drive installation works perfectly.  It offers an
  83. assortment of options -- whether to install the 1.3, 2.0, and/or 3.0 header
  84. files and link libraries; whether to include all, none, or a selected subset
  85. of the examples; which editor to install; and so on.  Anything not selected
  86. in the initial installation can be added later; an option in the Installer
  87. script allows the addition of selected modules to an existing installation.
  88.  
  89.     Unlike some badly-written installers, DICE's installation process
  90. is very careful never to change or replace any existing files without
  91. explaining exactly what it's going to do and waiting for permission.
  92.  
  93.     Depending on which options you select, DICE can take up anywhere
  94. from 1.5 to 8 megabytes of hard drive space.  Mine took up 4.7 megs, which
  95. is probably a fairly typical amount; few users are likely to need the full 8
  96. megs (which assumes, for example, that you install all three complete sets of
  97. includes and libraries).  Incidentally, although the installer and the
  98. manual refer to "3.0", the include files actually supplied are version 3.1.
  99.  
  100.     The freeware DICE is a freely distributable version of the compiler
  101. with floating point support and some Amiga-specific features disabled, but
  102. otherwise a perfectly good C compiler.  Users are encouraged to distribute
  103. the freeware version, which consists of the compiler, link libraries,
  104. standard C include files, and the relevant documentation -- no editor or any
  105. other tools (though DME can be found on a Fred Fish disk).
  106.  
  107.     The freeware version Installer script attempts to install DICE onto a
  108. single floppy, which doesn't work -- it's about 1.3 megs and needs two (I
  109. guess they must have tested it on an Amiga 4000 with high density 1.76 MB
  110. drives and forgot that most Amigas only have 880K drives).  This is easy to
  111. get around if you're running the installation on an Amiga with a hard drive:
  112. just create a drawer on your hard drive and assign "Freeware_Dice:" to it
  113. before you start.  (You'll still need a spare floppy for the install script
  114. to format, though.)  Afterwards, you can split the installed files between
  115. two floppies.  You can't run the freeware installation on a floppy-only
  116. system.
  117.  
  118.  
  119. COMPILER
  120.  
  121.     The actual compiler is changed little from the shareware version of
  122. DICE, apart from a few enhancements (mostly related to the VMAKE interface
  123. -- see below) and bug fixes.  Anyone familiar with the shareware DICE will
  124. find no surprises here.
  125.  
  126.     The compiler was designed with quick and reliable code generation as
  127. the primary goal, with optimisation secondary.  That's not to say DICE does
  128. no optimisation; it doesn't do the kind of aggressive optimisation
  129. performed by GCC or SAS C, but it produces perfectly good code for all but
  130. the most demanding cases (where most programmers would probably switch to
  131. assembly language anyway).
  132.  
  133.     The DICE compiler, DCC, is almost entirely conformant to the
  134. ANSI/ISO C standard, which is only to be expected these days.  There are a
  135. very few features and functions omitted, such as the atan2() function, and a
  136. large number of enhancements.
  137.  
  138.     Compiler features include precompiled header files, automatic
  139. generation of function prototypes, profiling (a special set of link
  140. libraries that allow you to keep track of exactly how much run time each
  141. part of your program is taking up), and a "typeof" operator.
  142.  
  143.     Most of the enhancements, of course, are related to writing
  144. Amiga-specific code.  These include automatic opening and closing of shared
  145. libraries; the "__chip" type qualifier to force data into Chip RAM; dynamic
  146. stack checking (which automatically gives your program more stack space when
  147. it runs short); the "wbmain()" function (giving a program different entry
  148. points depending on whether it was started from the Shell or Workbench);
  149. full control over parameter passing via registers or stack; and an extensive
  150. set of functions that make giving your program an ARexx interface fairly
  151. painless.
  152.  
  153.     The DICE package includes the complete set of include files and
  154. link libraries for Workbench 1.3, 2.0, and 3.0/3.1.
  155.  
  156.  
  157. INTEGRATED DEVELOPMENT ENVIRONMENT
  158.  
  159.     The centrepiece of the whole system is VMAKE, which, as you might
  160. expect from the name, is a visual "make" tool.  It's really an integrated
  161. development environment.  You create a "Project" and tell VMAKE what source
  162. files belong to it.  VMAKE gives you access to the editor of your choice (see
  163. below), compiler, debugger, and help system.  Compiler options are selected
  164. through VOPTS, which is basically a GUI for DCC -- you use the usual
  165. Intuition tools (gadgets, list windows, and so on) to select the compiler
  166. options, link libraries, and so on.  If you select a source file from VMAKE,
  167. the editor is invoked.  Once you've written the source code and set the
  168. compile options, you hit the "Make" button to compile and link everything
  169. that needs it, then pick one of the "Run" options to test it (there are
  170. three options -- CLI, Workbench, or Debugger).
  171.  
  172.     VMAKE knows what to do with individual source files by looking at
  173. their names -- a name ending in ".c" is C code, ".a" is assembler source,
  174. and so on.  It's smart enough to know not to compile a source file that
  175. hasn't changed since the last compile.
  176.  
  177.     If you get compile errors, the editor is automatically brought up
  178. with the cursor positioned on the line containing the first error; when
  179. you've fixed that, you hit Shift-F5 (or whatever alternative key you want to
  180. define) and the cursor is moved to the next error.  The full list of errors
  181. is visible in another window.
  182.  
  183.     VMAKE is highly customisable.  All the gadget and menu details are
  184. stored in plain text files rather than being hard-coded, and the formats are
  185. fully documented.  You can rewrite, add, and subtract menus and gadgets to
  186. your heart's content.
  187.  
  188.     I have a couple of nitpicks with VMAKE.  One concerns the "Save"
  189. options on VMAKE and VOPTS.  Every time I make any changes and save them, I
  190. get a requester that warns me that I'll be overwriting my existing project,
  191. and do I really want to do that?  Well of course I do, that's why I chose
  192. "Save".  I'm all for safety measures in important things, but VMAKE has far
  193. too many "Are you sure?" requesters for my taste Surprisingly, given the
  194. impressive configurability of VMAKE in most respects, there doesn't seem to
  195. be any way to switch them off.
  196.  
  197.     My other complaint is that VOPTS causes an Enforcer hit every time
  198. it's invoked!  (If you're not familiar with Enforcer, see below.) This is
  199. inexcusable in commercial software.  It doesn't seem to cause any problems
  200. (it appears to be a dereferenced null pointer), but it's not exactly the
  201. most encouraging sign, especially since Enforcer is included in the DICE
  202. package.
  203.  
  204.     A feature I like a lot is DiceHelp.  This is a program that takes
  205. the name of a C function, type, or include file, looks it up in the
  206. Autodocs, and opens a window to show you the documentation (if it finds
  207. any).  DICE 3.0 comes with docs for the standard C and DICE-specific
  208. functions; if you have the Commodore Autodocs it will use them too.  The
  209. installation program automatically creates the necessary ARexx scripts to
  210. integrate this with your choice of editor.  You just move the cursor over
  211. the function name and hit F5; the editor opens a second window showing the
  212. relevant documentation.
  213.  
  214.  
  215. DEBUGGER
  216.  
  217.     DICE includes a source code debugger, DD.  It can be used either
  218. standalone (from the command line) or through VMAKE.
  219.  
  220.     I'm not quite sure what to report about DD.  Most of it seems to
  221. work; you can see the source code in a window, set breakpoints and so on,
  222. but it seems to be missing one of the most important features of a
  223. debugger:  I can't find any way to inspect (or set) the value of a
  224. variable.  (You can read the values of memory locations, but since there's
  225. no way of finding the address of a variable, that's not much help.) I say
  226. "seems to" because I can't believe OIC could have left out anything so
  227. important; but if it's there, it isn't documented, and I haven't been able
  228. to figure it out by trial and error.  I'll reserve judgement on the debugger.
  229.  
  230.  
  231. EDITORS
  232.  
  233.     The DICE package includes two editors.  DME is the standard editor
  234. that has been included with all versions of DICE.  The new one is AME
  235. (Advanced Micro Emacs).  I switched to AME immediately and haven't regretted
  236. it; it's basically all the good features of Emacs without the megabloat
  237. (less than 100K!).
  238.  
  239.     Many features are common to both editors:  multiple windows, full
  240. ARexx support, programmable keys and menus, and all the usual features you'd
  241. expect in an editor (search and replace, clipboard support, paragraph
  242. formatting, and so on).  AME has a few features not found in DME:  multiple
  243. undo steps (although this still has a few bugs in it); the ability to open
  244. on its own screen or a public screen (DME opens only on the Workbench) and
  245. even jump to a different screen while running; and 16-bit character support.
  246.  
  247.     AME also has a "C mode" which is automatically invoked when you edit
  248. a file whose name ends in ".c".  You can also switch it on manually.  It
  249. provides programmer-friendly features like bracket matching (warning you if
  250. you enter a mismatched bracket).
  251.  
  252.     Besides its own two editors, DICE also supplies sets of ARexx macros
  253. for integrating VMAKE with Cygnus Ed and TurboText and promises to provide
  254. more editor options in the future.
  255.  
  256.  
  257. OTHER TOOLS
  258.  
  259.     Besides the compiler, editors, debugger, and VMAKE, a large number
  260. of other tools are supplied with DICE.
  261.  
  262.     RCS (Revision Control System) helps with the development of large
  263. projects.  It keeps track of who is working on each source file, recording
  264. all changes to allow later reversion to an old version if necessary.  I
  265. don't use this myself (it seems like overkill for one-person projects), but
  266. it would be extremely useful for large projects involving several
  267. programmers and many source files.  (I program mainframes for a living, and
  268. we use a similar system in our work.)  RCS is fully integrated with VMAKE.
  269.  
  270.     There is an assembler, DAS.  It's designed primarily to be called by
  271. DCC as part of the compilation process, so its features are fairly minimal
  272. and somewhat specialised, but it can be used as a standalone assembler if
  273. you need one.  Again, VMAKE knows about it.
  274.  
  275.     Mike Sinz's Enforcer is included.  Enforcer is run in the background
  276. (most programmers put it in their s:User-Startup and leave it running
  277. permanently) and uses the MMU (Memory Management Unit) to watch for illegal
  278. access to certain regions of memory, such as the low page and nonexistent
  279. pages.  With the help of auxiliary tools like SegTracker and FindHit (both
  280. included), you can often locate the exact line of code that produced such
  281. errors -- the classic example is a dereferenced null pointer.  Enforcer
  282. works only on an Amiga with an MMU, which basically means a 68030 (not
  283. 68EC030) or 68040 CPU.
  284.  
  285.     Other tools include DOBJ, a disassembler; DPROF, a profiler for use
  286. with the profiling libraries; FDTOLIB, which creates link libraries from FD
  287. files; and many others.
  288.  
  289.     Massive quantities of source code are provided.  The source for
  290. VMAKE and many of the other tools is present.  There are also working
  291. examples of a shared library, an Exec device, a DOS handler, and a printer
  292. driver.
  293.  
  294.  
  295. DOCUMENTATION
  296.  
  297.     DICE 3.0 comes with a printed manual of about 450 pages.  It's very
  298. tightly bound and won't lie flat; in fact, it's difficult to even hold it
  299. open with one hand.  I recommend that the first thing any purchaser does is
  300. take the manual to the nearest printer and get it spiral bound (thanks to
  301. Liam Greenwood for the suggestion).  It cost me NZ$4.00 (about US$2.50).  I
  302. don't know why so many software publishers are unwilling to add the extra
  303. dollar or so to the price in order to have spiral binding.
  304.  
  305.     The manual is well-organised and fairly well written and should be
  306. equally useful to beginners and experts.  The proof-reading occasionally
  307. leaves something to be desired, though.  There are a few humorous comments
  308. of the "This page unintentionally left blank" variety.
  309.  
  310.     The manual begins with an outline of DICE's features and
  311. instructions for installing it, which amount to little more than "Put Disk 1
  312. in the drive and hit the Install icon".  This is followed by an introduction
  313. to C, which is probably a waste of space -- it's far too sketchy for a
  314. novice actually to learn C from it without a real textbook, and it is
  315. redundant if you have a real textbook.
  316.  
  317.     Next comes the description of VMAKE.  This is thorough and easy to
  318. follow, although the section on VOPTS is missing (the relevant page just
  319. says "[TBA]", so I guess someone forgot to stick it in).  This isn't a
  320. serious problem; if you read the section later in the manual that describes
  321. the compiler's command line options, it's pretty obvious how they correspond
  322. to the gadgets in VOPTS.
  323.  
  324.     The next sections cover the DICE compiler, the various tools and
  325. utilities, the two editors, and the online help system.  Full documentation
  326. for most of these is also provided on disk.
  327.  
  328.     The biggest section of the manual is the function reference, which
  329. documents all of the standard C functions, as well as those specific to
  330. DICE.  These are in the standard Autodocs format and are also provided on
  331. disk for use with DiceHelp.
  332.  
  333.     The last section will be very helpful to those new to C
  334. programming.  It's a problem-solving guide that describes many of the most
  335. common errors made by C programmers and how to avoid them.
  336.  
  337.     There is a fairly thorough index.
  338.  
  339.  
  340. LIKES
  341.  
  342.     Installation:  Painless and apparently flawless hard disk
  343. installation.
  344.  
  345.     Compiler:  Very fast compilation; almost complete ANSI/ISO
  346. standardisation; useful extensions, especially the ARexx package.
  347.  
  348.     Editors:  Ability to use several editors; extensive customisation
  349. capability; multi-window and multi-screen capability in AME; ARexx interface.
  350.  
  351.     Development environment:  VMAKE gives access to everything you need
  352. for development; Style Guide compliant interface; fully customisable and
  353. extensible; excellent online help system.
  354.  
  355.  
  356. DISLIKES AND SUGGESTIONS
  357.  
  358.     Installation:  Freeware version installation doesn't work properly.
  359.  
  360.     Editors:  Buggy "undo" in AME; AME opens on the Workbench by default
  361. when you invoke it from VMAKE, which is annoying.  It has always mystified me
  362. why so many people write editors that insist on taking over the Workbench,
  363. when opening their own screen is so easy.
  364.  
  365.     Development environment:  Major missing feature in debugger (this
  366. is my only really serious complaint); Enforcer hit in VMAKE/VOPTS; annoying
  367. "Are you sure?" requesters.
  368.  
  369.     Suggestions:  Apart from bug fixes, I'd like to see an "off" switch
  370. for VMAKE's annoying requesters.  You can edit VMAKE's options to make AME
  371. use its own screen, which I prefer, but it takes some digging in the
  372. documentation to figure out how to do this; it should be easier (or, better
  373. yet, the default).  A good, standalone assembler would be very useful.  The
  374. manual says at one point that A68K is included, but it isn't; I guess it got
  375. left out at the last moment.
  376.  
  377.     One major feature I'd like to see is some sort of interface
  378. designer.  Most compilers on the PC and Mac come with GUI design toolkits;
  379. we're always saying how marvellous the Amiga's interface is, so why are
  380. there so few GUI tools for the Amiga?  GUIs have been around long enough now
  381. that it's about time compiler vendors started thinking of interface toolkits
  382. as part of the necessary minimum standard rather than an optional extra.
  383.  
  384.  
  385. COMPARISON TO OTHER SIMILAR PRODUCTS
  386.  
  387.     The other C compilers I have used are GCC on the Amiga and Borland
  388. C++ on the PC.  Comparison to Borland C++ is hardly fair, given the very
  389. different markets the products are aimed at; I don't think it counts as a
  390. "similar product".
  391.  
  392.     GCC has the obvious advantage of being free.  DICE's user interface
  393. is so much better there's no comparison.  GCC is ported from UNIX and takes
  394. the standard UNIX "user friendly is for wimps" attitude.  DICE is much
  395. smaller and faster; GCC produces better optimised code.  Both include many
  396. additional tools and extensive online documentation; DICE's is better
  397. organised and easier to use.  GCC includes C++ as well as C.  DICE has many
  398. features adapted for writing Amiga-specific code; GCC has practically none.
  399. Executables produced by DICE are the property of the writer and can be
  400. distributed under whatever terms you choose, whereas those produced by GCC
  401. are subject to the General Public Virus, sorry, Licence.
  402.  
  403.     [MODERATOR'S NOTE:  I am not sure that Ross's statement about GCC
  404.     and the GNU Public Licence is correct.  I am checking it out.
  405.     - Dan]
  406.  
  407.     DICE's natural competitor is SAS C, which I've never used.  SAS is
  408. far more expensive; I gather it includes counterparts to most of the tools
  409. provided with DICE.  SAS's editor is reputed to be fairly minimal, whereas
  410. DICE includes two full-featured editors; but there are enough good editors
  411. available in the commercial, shareware, and PD worlds that this is probably
  412. not an important consideration.  SAS includes some C++ features, although
  413. since it lacks templates and exceptions it can't be considered a serious C++
  414. development system).  DICE is plain C only.  Like GCC, SAS does much better
  415. optimisation than DICE; I don't know how it compares in compilation speed,
  416. or whether it includes the equivalent of VMAKE or an interface toolkit.  I
  417. assume SAS's debugger works properly.
  418.  
  419.  
  420. BUGS
  421.  
  422.     I've described the few bugs I found elsewhere in this review.  I've
  423. contacted the support address about the debugger problem and the Enforcer
  424. hit but have received no reply so far.
  425.  
  426.  
  427. VENDOR SUPPORT
  428.  
  429.     Internet, Compuserve, and US Mail addresses are given for support.
  430. Although I've received no reply after a couple of weeks to my query about
  431. the debugger, I have received very helpful replies to some questions about
  432. AME.
  433.  
  434.  
  435. WARRANTY
  436.  
  437.     None.
  438.  
  439.  
  440. CONCLUSIONS
  441.  
  442.     Overall, despite a few minor niggles and one major one, I like
  443. DICE.  The compiler is very fast, and produces good enough code for all but
  444. the most speed-critical applications, and the other tools are well-chosen,
  445. well-designed, easy to use, and highly customisable.  I recommend DICE 3.0
  446. highly to anyone interested in C programming on the Amiga.
  447.  
  448.     I give it 8 out of 10, rising to 8.5 if they fix that hole in the
  449. debugger and the Enforcer hit in VOPTS.
  450.  
  451.  
  452. COPYRIGHT NOTICE
  453.  
  454.     Copyright 1994 Ross Smith.  All rights reserved.  This review is
  455. freely distributable.
  456.  
  457.     Ross Smith (Wanganui, New Zealand) ... alien@acheron.amigans.gen.nz
  458.     GCS/S d? p c++++ l u-- e- m---(*) s+/++ n--- h+ f g+ w+ t+(-) r+ y?
  459.         Keeper of the FAQ for rec.aviation.military
  460.     "Well, we know what to get you for Christmas.  A double lobotomy and
  461.     ten rolls of rubber wallpaper."                         (A J Rimmer)
  462.  
  463. ---
  464.  
  465.    Daniel Barrett, Moderator, comp.sys.amiga.reviews
  466.    Send reviews to:    amiga-reviews-submissions@math.uh.edu
  467.    Request information:    amiga-reviews-requests@math.uh.edu
  468.    Moderator mail:    amiga-reviews@math.uh.edu
  469.    Anonymous ftp site:  math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews
  470.